Over the years, multitudes of memory testing methods have been developed. One such method makes use of a microprocessor coupled to a flash memory. The flash memory is programmed on a word-by-word basis. After each programming operation, the word just programmed is verified by the microprocessor. The verification operation is initiated by the microprocessor writing a program verify command into a command register of the flash memory. The program verify operation stages the flash memory for verification of the word last programmed. The flash memory applies an internally-generated margin voltage to the word. The microprocessor then performs a read cycle to output the word from the flash memory to the microprocessor. The microprocessor then compares the data word read from the flash memory to the data word that the microprocessor intended to program into the flash memory. A successful comparison between the programmed word and the time data means that the word was successfully programmed. If the data was not successfully programmed, then the program and verify steps are repeated with a limit of, for example, 25 attempts to program the word.
A secondary method of flash memory verification includes placing a flash memory system into a special programming mode. The special programming mode includes programming a plurality of words, by means of hashing, into the memory without the memory performing internal program verification. Hashing is a scheme for providing rapid access to data items which are distinguished by some key. A key is a value used to identify a record in a database, derived by applying some fixed function to the record, and is often simply one of the fields. The key may also be obtained by applying some function, e.g. a hash function, to one or more of the fields, and each data item to be stored is associated with a key.
The special programming mode allows the host processor to program a series of words by means of hashing and then store the words with their keys in the memory. Copies of the hash values are stored in the processor. A comparison is made between the memory stored hash values and the processor stored hash values to see whether the hash values are the same or different. The special programming mode is then exited and internal program verification by the memory is enabled. The comparison of the hash values allows the system to detect if the words were stored properly.
These and other methods of prior art memory verification tend to have the drawback that, while storage errors can be recognized (through the use of special circuits not typically found in processors), they can not be corrected. Furthermore, prior art memory correction systems and methods require separate error detection circuitry to be implemented, which can often be costly and take up valuable circuit area.